#ifndef __WEIGHTCALCULATOR_H__
#define __WEIGHTCALCULATOR_H__

#include "PathPoint.h"
#include "Parameter.h"
#include "../occupancy_map.h"
#include <cmath>


class WeightCalculator
{
public:
	WeightCalculator(void);
	long distBetween(PathPoint *pos1, PathPoint *pos2, const OccupancyMap &map, bool goal);
	~WeightCalculator(void);
private:
	void computeWeight();
	long horizontalCost(PathPoint *pos1, PathPoint *pos2);
	long unevenZcost(PathPoint *pos1, PathPoint *pos2, const OccupancyMap &map);
	long getRotationCost(PathPoint *pos1, PathPoint *pos2);

	int sizeGrid, fattoreScalaZDem, roverSize;
	int weightUnevenZ, weightFlat, weightFlatDiag, weightRotation;
};

#endif
